# 自定义的工具类
import functools
from flask import session, current_app, g
from info.models import User


def do_index_class(index_a):
    """新闻排序序号过滤器"""
    if index_a == 1:
        return "first"
    elif index_a == 2:
        return "second"
    elif index_a == 3:
        return "third"
    else:
        return ""


# 使用装饰器的方法向/modules/news/views.py的新闻详情页提供登录用户对象
def query_user_data(f):
    # 使用function.wraps去装饰内层函数，可以保持当前装饰器去装饰的函数的__name__的值不变，否则会变成wrapper
    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        # 1.查看用户的id,从而判断用户是否登录
        user_id = session.get("user_id", None)
        # 2.通过id查取到用户模型对象
        user = None
        if user_id:
            try:
                user = User.query.get(user_id)
            except Exception as e:
                current_app.logger.debug(e)
        # 将查询出来的值赋给全局变量g(应用上下文)。g 作为 flask 程序全局的一个临时变量,充当者中间媒介的作用,我们可以通过它传递一些数据，g 保存的是当前请求的全局变量
        g.user = user
        return f(*args, **kwargs)
    return wrapper


# 使用函数的方法向/modules/news/views.py的新闻详情页提供登录用户对象
def query_user_data1():
    # 1.查看用户的id,从而判断用户是否登录
    user_id = session.get("user_id", None)
    # 2.通过id查取到用户模型对象
    user = None
    if user_id:
        try:
            user = User.query.get(user_id)
        except Exception as e:
            current_app.logger.debug(e)
    return user